package web.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import web.util.Log;
/**创建数据库连接池,默认创建10个连接存到
 * <pre>
 * LinkedList&lt;Connection&gt;{@link #listConn}
 * </pre>
 * @author 乐渊
 * @version 1.0
 * 
 * */
public class DBPool {
	
	private static List<Connection> listConn = new ArrayList<>();
	
	public DBPool(){
		
	}
	
	/**为连接池初始化获取连接
	 * @return conn 返回一个数据库连接
	 * */
	private Connection getConn(){
		Connection conn = null;
			
		try {
			conn = DriverManager.getConnection(DBPropertiesScan.url, DBPropertiesScan.username, DBPropertiesScan.password);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return conn;
	}
	
	/**初始化连接池
	 * */
	public void initPool(){
		Integer max = Integer.parseInt(DBPropertiesScan.max);
		try {
			Class.forName(DBPropertiesScan.driver);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		for(int i=0;i<max;i++){
			listConn.add(getConn());
		}
	}
	
	/**从连接池中获取一个连接。
	 * @return 
	 * */
	protected static Connection getConnection(){
		if(!listConn.isEmpty())
			return listConn.remove(0);
		else{
			new Log().setLog("连接池用完了！");
			return null;
		}
	}
	/**释放一个连接到连接池。
	 * @param conn 
	 * */
	protected static void releaseConnection(Connection conn){
		listConn.add(conn);
	}
	
}
